package com.agilya.dao.daointerface;

import java.util.List;

import com.agilya.dao.exception.DAOExceptions;
import com.agilya.modele.Chapitre;
import com.agilya.modele.QCM;

public interface QCMDAO {

	/**
	 * Retourne tous les QCM existants
	 * 
	 * @return une liste de QCM
	 * @throws DAOExceptions
	 */
	public List<QCM> getAllQCM() throws DAOExceptions;

	/**
	 * Retourne tous les QCM d'un chapitre
	 * 
	 * @param idChapitre
	 * @return une liste de QCM
	 * @throws DAOExceptions
	 */
	public List<QCM> getAllQCMbyChapitre(int idChapitre) throws DAOExceptions;

	/**
	 * Retourne un QCM par son id
	 * 
	 * @param idQCM
	 * @return un QCM
	 * @throws DAOExceptions
	 */
	public QCM getQCMbyId(int idQCM) throws DAOExceptions;

	/**
	 * permet d'enregistrer un nouveau QCM et l'attribue a un ou plusieurs chapitres.
	 * 
	 * @param qcm
	 * @param chapitres
	 * @return l'id du nouveau QCM
	 * @throws DAOExceptions
	 */
	public Integer enregistrerQCM(QCM qcm, List<Chapitre> chapitres) throws DAOExceptions;

	/**
	 * Affecte des questions a un QCM
	 * 
	 * @param idQCM
	 * @param listeIDQuestion
	 * @throws DAOExceptions
	 */
	public void affecterQuestionsQCM(int idQCM, List<Integer> listeIDQuestion) throws DAOExceptions;

	/**
	 * Desaffecte des questions a un QCM
	 * 
	 * @param idQCM
	 * @param listeIDQuestion
	 * @throws DAOExceptions
	 */
	public void desaffecterQuestionsQCM(int idQCM, List<Integer> listeIDQuestion) throws DAOExceptions;

}
